package com.xjoyt.pay.operater.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.xjoyt.pay.operater.auth.po.AccountUser;
import com.xjoyt.pay.operater.services.UserService;

import io.swagger.annotations.ApiParam;

/**
 * ${DESCRIPTION}
 *
 * @author wanghaobin
 * @create 2017-06-21 8:15
 */
@Controller
@RequestMapping("user")
public class UserApiController {
	@Autowired
	private UserService userService;
//    @Autowired
//    private MenuBiz menuBiz;
//    @Autowired
//    private ElementBiz elementBiz;
	
	@RequestMapping(value = "/phone/{phone}",method = RequestMethod.GET, produces="application/json")
    public  @ResponseBody AccountUser getUserByPhone(@ApiParam(example="18565817096",defaultValue="18565817096",value="用户手机号") @PathVariable("phone")String phone) {
        AccountUser user = userService.getUserByPhone(phone);
        return user;
    }
	

    @RequestMapping(value = "/username/{username}",method = RequestMethod.GET, produces="application/json")
    public  @ResponseBody AccountUser getUserByUsername(@ApiParam(example="18565817096",defaultValue="18565817096",value="用户手机号") @PathVariable("username")String username) {
        AccountUser user = userService.getUserByUsername(username);
        return user;
    }

//    @RequestMapping(value = "/permissions", method = RequestMethod.GET)
//    public @ResponseBody List<PermissionInfo> getAllPermission(){
//        List<Menu> menus = menuBiz.selectListAll();
//        List<PermissionInfo> result = new ArrayList<PermissionInfo>();
//        PermissionInfo info = null;
//        menu2permission(menus, result);
//        List<Element> elements = elementBiz.selectListAll();
//        element2permission(result, elements);
//        return result;
//    }
//
//    private void menu2permission(List<Menu> menus, List<PermissionInfo> result) {
//        PermissionInfo info;
//        for(Menu menu:menus){
//            if(StringUtils.isBlank(menu.getHref())){
//                menu.setHref("/"+menu.getCode());
//            }
//            info = new PermissionInfo();
//            info.setCode(menu.getCode());
//            info.setType(CommonConstant.RESOURCE_TYPE_MENU);
//            info.setName(CommonConstant.RESOURCE_ACTION_VISIT);
//            String uri = menu.getHref();
//            if(!uri.startsWith("/"))
//                uri = "/"+uri;
//            info.setUri(uri);
//            info.setMethod(CommonConstant.RESOURCE_REQUEST_METHOD_GET);
//            result.add(info
//            );
//            info.setMenu(menu.getTitle());
//        }
//    }
//
//    @RequestMapping(value = "/user/un/{username}/permissions", method = RequestMethod.GET)
//    public @ResponseBody List<PermissionInfo> getPermissionByUsername(@PathVariable("username") String username){
//        AccountUser user = userBiz.getUserByUsername(username);
//        List<Menu> menus = menuBiz.getUserAuthorityMenuByUserId(user.getId());
//        List<PermissionInfo> result = new ArrayList<PermissionInfo>();
//        PermissionInfo info = null;
//        menu2permission(menus,result);
//        List<Element> elements = elementBiz.getAuthorityElementByUserId(user.getId()+"");
//        element2permission(result, elements);
//        return result;
//    }
//
//    private void element2permission(List<PermissionInfo> result, List<Element> elements) {
//        PermissionInfo info;
//        for(Element element:elements){
//            info = new PermissionInfo();
//            info.setCode(element.getCode());
//            info.setType(element.getType());
//            info.setUri(element.getUri());
//            info.setMethod(element.getMethod());
//            info.setName(element.getName());
//            info.setMenu(element.getMenuId());
//            result.add(info);
//        }
//    }
//
//    @RequestMapping(value = "/user/un/{username}/system", method = RequestMethod.GET)
//    @ResponseBody
//    public String getSystemsByUsername(@PathVariable("username") String username){
//        int userId = userBiz.getUserByUsername(username).getId();
//        return JSONObject.toJSONString(menuBiz.getUserAuthoritySystemByUserId(userId));
//    }
//    @RequestMapping(value = "/user/un/{username}/menu/parent/{parentId}", method = RequestMethod.GET)
//    @ResponseBody
//    public String getMenusByUsername(@PathVariable("username") String username,@PathVariable("parentId")Integer parentId){
//        int userId = userBiz.getUserByUsername(username).getId();
//        try {
//            if (parentId == null||parentId<0) {
//                parentId = menuBiz.getUserAuthoritySystemByUserId(userId).get(0).getId();
//            }
//        } catch (Exception e) {
//            return JSONObject.toJSONString(new ArrayList<MenuTree>());
//        }
//        return JSONObject.toJSONString(getMenuTree(menuBiz.getUserAuthorityMenuByUserId(userId), parentId));
//    }
//
//    private List<MenuTree> getMenuTree(List<Menu> menus,int root) {
//        List<MenuTree> trees = new ArrayList<MenuTree>();
//        MenuTree node = null;
//        for (Menu menu : menus) {
//            node = new MenuTree();
//            BeanUtils.copyProperties(menu, node);
//            trees.add(node);
//        }
//        return TreeUtil.bulid(trees, root) ;
//    }
}
